/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.logica;

import co.com.going.modelo.Ciudad;
import co.com.going.persistencia.IDAOciudad;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Olguita
 */
@Stateless
public class LogicaCiudad implements ILogicaCiudad {

    @EJB
    private IDAOciudad iDAOciudad;
   
    
    @Override
    public void crearCiudad(Ciudad ciudad) throws Exception {
        
        if(ciudad==null){
        
            throw new Exception("La Ciudad no tiene Informacion");
        
        }
        
        Ciudad objCiudad= iDAOciudad.buscarCiudadPorNombre(ciudad.getNombreCiudad(), ciudad.getCodPaisCiudad().getCodPais());
        
        if(objCiudad!=null){
        
        
            throw new Exception("La Ciudad ya Existe");
        
        }
        
       Ciudad objCiudad2=iDAOciudad.buscarCiudadPorId(ciudad.getCodCiudad());
       
       if(objCiudad2!=null){
        
        
            throw new Exception("El codigo de la Ciudad proporcionado ya se encuentraen Uso");
         
        }
        
        
        if(ciudad.getNombreCiudad()==null||ciudad.getNombreCiudad().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
         if(ciudad.getCodCiudad()==null||ciudad.getCodCiudad()==0){
            
            throw new Exception("Debe de Proporcionarse un codigo para identificar la ciudad");
            
        }
         
         if(ciudad.getCodPaisCiudad().getCodPais()==null||ciudad.getCodPaisCiudad().getCodPais()==0){
            
            throw new Exception("debe de proporcionarse un pais al que pertenece la Ciudad");
            
        }
         
         iDAOciudad.crearCiudad(ciudad);
        
    }

    @Override
    public void eliminarCiudad(Ciudad ciudad) throws Exception {

        if(ciudad==null){
        
            throw new Exception("La Ciudad no tiene Informacion");
        
        }
        
        Ciudad objCiudad= iDAOciudad.buscarCiudadPorNombre(ciudad.getNombreCiudad(), ciudad.getCodPaisCiudad().getCodPais());
        
        if(objCiudad==null){
       
        
            throw new Exception("La Ciudad No Existe");
        
        }
        
        if(objCiudad.getEscuelaList().size()>0){
            
            throw new Exception("La Ciudad Tiene Escuelas Asociadas Eliminelas primero e intente nuevamente");
            
        }
        
       
        
        iDAOciudad.eliminarCiudad(objCiudad);
        
    }

    @Override
    public void modificarCiudad(Ciudad ciudad) throws Exception {
        
        if(ciudad==null){
        
            throw new Exception("La Ciudad No Tiene Informacion");
        
        }
        
        Ciudad objCiudad= iDAOciudad.buscarCiudadPorNombre(ciudad.getNombreCiudad(), ciudad.getCodPaisCiudad().getCodPais());
        
        if(objCiudad!=null){
        
        
            throw new Exception("El Nombre de la Ciudad ya Existe");
        
        }
               
        
        if(ciudad.getNombreCiudad()==null||ciudad.getNombreCiudad().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
         if(ciudad.getCodCiudad()==null||ciudad.getCodCiudad()==0){
            
            throw new Exception("Debe de Proporcionarse un codigo para identificar la ciudad");
            
        }
         
         if(ciudad.getCodPaisCiudad().getCodPais()==null||ciudad.getCodPaisCiudad().getCodPais()==0){
            
            throw new Exception("debe de proporcionarse un pais al que pertenece la Ciudad");
            
        }
         
         iDAOciudad.modificarCiudad(ciudad);
         
    }

    @Override
    public List<Ciudad> ciudades() throws Exception {
        
        return iDAOciudad.ciudades();
        
    }

    
    @Override
    public Ciudad buscarPorNombre(String nombre, Long IdPais) throws Exception {
       
       if(nombre==null||nombre.equals("")) {
           
           throw new Exception("Ingrese Un nombre Para realizar la busqueda");
           
       }
       
       if(IdPais==null||IdPais==0) {
           
           throw new Exception("Ingrese Un Pais");
           
       }
       
       
       return iDAOciudad.buscarCiudadPorNombre(nombre, IdPais);
        
    }

    @Override
    public Ciudad buscarPorId(Long IDciudad) throws Exception {
       
        if(IDciudad==null||IDciudad==0) {
           
           throw new Exception("Ingrese Un ID Para realizar la busqueda");
           
       }
       
      return iDAOciudad.buscarCiudadPorId(IDciudad);
    }

    @Override
    public List<Ciudad> CiudadesOrigen() throws Exception {
        
        return iDAOciudad.CiudadesOrigen();
        
    }
    
    
}
